var api = require('../../../config/api.js');
var util = require('../../../utils/util.js');
var user = require('../../../utils/user.js');

var app = getApp();
Page({
  data: {
    canIUseGetUserProfile: false,
    isNeedInfo: false,
    isSetUserInfo: false,
    token: '',
    userInfo: null,
    dataForm: {
      userId: '',
      nickname: '',
      avatar: ''
    }
  },
  onLoad: function(options) {
    // 页面初始化 options为页面跳转所带来的参数
    // 页面渲染完成
    if (wx.getUserProfile) {
      this.setData({
        canIUseGetUserProfile: true
      })
    }
  },
  onUnload() {
    // 没有设置用户资料，清除用户登录信息
    if (!this.data.isSetUserInfo) {
      wx.removeStorageSync('userInfo')
      wx.removeStorageSync('token')
    }
  },
  wxLogin(e) {
    if (this.data.canIUseGetUserProfile) {
      wx.getUserProfile({
        desc: '用于完善会员资料', // 声明获取用户个人信息后的用途，后续会展示在弹窗中，请谨慎填写
        success: (res) => {
          this.doLogin(res.userInfo)
        },
        fail: () => {
          util.showErrorToast('微信登录失败');
        }
      })
    }
    else {
      if (e.detail.userInfo == undefined) {
        app.globalData.hasLogin = false;
        util.showErrorToast('微信登录失败');
        return;
      }
      this.doLogin(e.detail.userInfo)
    }
  },
  async doLogin(userInfo) {
    user.checkLogin().catch(() => {
      user.loginByWeixin(userInfo).then(async res => {
        // 需要完善用户信息
        if (!res.data.userInfo.improve) {
          const { userInfo, token } = res.data
          this.setData({
            isNeedInfo: true,
            userInfo,
            token,
            'dataForm.userId': userInfo.userId
          })
        } else {
          this.loginSuccess(res)
        }
      }).catch((err) => {
        app.globalData.hasLogin = false;
        util.showErrorToast('微信登录失败');
      });

    });
  },
  async bindSecondaryAgen(type,supid) {
    console.log("未登录————————扫描：" + type)
    if(type == '1'){//扫描的商品码
      await util.request(api.SecondaryAgenApi, {
        supid: Number(supid)
      }, 'GET').then(res => {
        if (res.errno === 0) {
          wx.showToast({
            title: res.errmsg
          })
        }else{
          util.showErrorToast(res.errmsg);
        }
      })
    }else if(type=='2'){
      await util.request(api.SecondaryAgenApi1, {
        supid: Number(supid)
      }, 'GET').then(res => {
        if (res.errno === 0) {
          wx.showToast({
            title: res.errmsg
          })
        }else{
          util.showErrorToast(res.errmsg);
        }
      })
    }

  },
  bindNicknameInput(e) {
    this.setData({
      'dataForm.nickname': e.detail.value
    });
  },
  bindNicknamechange(e) {
    this.setData({
      'dataForm.nickname': e.detail.value
    });
  },
  // 获取用户头像
  getUserProfile(e) {
    const avatarUrl = e.detail.avatarUrl
    // 注意：这里是微信给我们返回图片的临时地址，实际开发中还需要上传图片到服务器
    // 执行图片转base64方法
    this.base64(avatarUrl, "png").then(res => {
      this.setData({
        'dataForm.avatar': res
      });
    })
  },
  // 登录成功
  async loginSuccess() {
    app.globalData.hasLogin = true;
    if (app.globalData.supid) {
      await this.bindSecondaryAgen(app.globalData.type,app.globalData.supid)
    }
    this.setData({
      isSetUserInfo: true
    })
    wx.navigateBack({
      delta: 1
    })
  },
  // 保存用户资料
  async handleSubmit(){
    const { nickname, avatar } = this.data.dataForm
    if (nickname === '') {
      wx.showToast({
        title: '昵称不能为空',
        icon: 'none'
      })
      return
    }
    if (avatar === '') {
      wx.showToast({
        title: '头像不能为空',
        icon: 'none'
      })
      return
    }
    util.request(api.setUserInfoApi, this.data.dataForm, 'POST').then(async res => {
      if (res.errno === 0) {
        this.loginSuccess(res)
      }else{
        util.showErrorToast(res.errmsg);
      }
    })
    
  },
  // 图片转64代码
  base64(url) {
    return new Promise((resolve, reject) => {
      wx.getFileSystemManager().readFile({
        filePath: url, //选择图片返回的相对路径
        encoding: 'base64', //编码格式
        success: res => {
          resolve("data:image/jpg;base64," + res.data)
        },
        fail: res => reject(res.errMsg)
      })
    })
  }
})
